|
Menüeintrag |
---|
Bearbeiten → Placement... |
Arbeitsbereich |
Alle |
Standardtastenkürzel |
Keiner |
Eingeführt in Version |
- |
Siehe auch |
Std Ausrichtung, Positionierung |
Der Befehl Std Positionierung zeigt den Aufgabenbereich Placement für ein ausgewähltes Objekt an.
Der Aufgabenbereich Placement
Der Dialog kann auch durch Klicken auf die Ellipsentaste … gestartet werden, die im Eigenschaften-Ansicht erscheint, wenn man auf die Daten-EigenschaftPlacement klickt.
Siehe auch: Autogenerierte API-Dokumentation und Grundlagen der Skripterstellung in FreeCAD.
Siehe das Python Skipterstellung Tutorium.
Eine Positionierung wird intern durch eine Matrix bestimmt; in vielen Fällen ist es einfacher, dies durch zwei Komponenten darzustellen, einem Base
-Punkt (Vektor) und einem Rotation
-Wert. Rotation
selbst hat verschiedene Entsprechungen. Es kann vollständig durch den Wert einer "quaternion" (xi + yj + zk + w)
bestimmt werden. Es kann aber auch durch eine Rotations Axis
(Einheitsvektor) und eine Rotations Angle
(Bogenmaß) bestimmt werden.
import FreeCAD as App
doc = App.newDocument()
obj = doc.addObject("Part::Cylinder", "Cylinder")
print(obj.Placement)
# Placement [Pos=(0,0,0), Yaw-Pitch-Roll=(0,0,0)]
print(obj.Placement.Base)
# Vector (0.0, 0.0, 0.0)
print(obj.Placement.Rotation)
# Rotation (0.0, 0.0, 0.0, 1.0)
print(obj.Placement.Rotation.Angle)
# 0.0
print(obj.Placement.Rotation.Axis)
# Vector (0.0, 0.0, 1.0)
print(obj.Placement.Rotation.Q)
# (0.0, 0.0, 0.0, 1.0)
Verschiebe den Basispunkt des Objekts und drehe dann das Objekt um 45 Grad um die x-Achse.
Das Modul math stellt eine Methode radians()
zur Verfügung, mit der einfach von Grad in Bogenmaß umgewandelt werden kann und muss als erstes importiert werden.
import math
obj.Placement.Base = App.Vector(5, 3, 1)
obj.Placement.Rotation.Axis = App.Vector(1, 0, 0)
obj.Placement.Rotation.Angle = math.radians(45)
print(obj.Placement)
# Placement [Pos=(5,3,1), Yaw-Pitch-Roll=(0,0,45)]
print(obj.Placement.Rotation.Q)
# (0.3826834323650898, 0.0, 0.0, 0.9238795325112867)
print(obj.Placement.Matrix)
# Matrix ((1,0,0,5),(0,0.707107,-0.707107,3),(0,0.707107,0.707107,1),(0,0,0,1))
Um das Objekt um 90° um sowohl die X-Achse als auch die Z-Achse zu drehen, kann auch obj.Placement.Rotation.setYawPitchRoll
verwendet werden.
obj.Placement.Base = App.Vector(5, 3, 1)
obj.Placement.Rotation.Axis = App.Vector(1, 0, 0)
obj.Placement.Rotation.setYawPitchRoll(90, 0, 90)
print(obj.Placement)
# Placement [Pos=(5,3,1), Yaw-Pitch-Roll=(90,0,90)]